package org.xlp.db.bridge.strategy;

import java.lang.annotation.Annotation;


/**
 * Description: 数据查找工具了
 * <br/>date: 2024/4/21 19:26
 *
 * @version 1.0
 * @author: xlp
 */
class Finder {
    /**
     *标记未找到
     */
    public final static int NOT_FIND = -1;

    /**
     * 查找给定注解标记的类在查询类数组中的下标
     * @param classes 检查类
     * @param annotationClass 检查注解
     * @return -1：不存在，否则返回数组下标
     */
    public static int findAnnotationInClasses(Class<?>[] classes,
           Class<? extends Annotation> annotationClass){
        int index = NOT_FIND;
        for (Class<?> cs : classes) {
            index++;
            if (cs.getAnnotation(annotationClass) != null){
               return index;
            }
        }
        return NOT_FIND;
    }

    /**
     * 查找指定的类在查询类数组中的下标
     * @param classes 检查类数组
     * @param cls 检查类
     * @return -1：不存在，否则返回数组下标
     */
    public static int findClassInClasses(Class<?>[] classes, Class<?> cls){
        int index = NOT_FIND;
        for (Class<?> cs : classes) {
            index ++;
            if (cls.isAssignableFrom(cs)){
                return index;
            }
        }
        return NOT_FIND;
    }
}
